package com.weijin.service;

import com.weijin.model.entities.Vacation;
import com.weijin.model.from.OperateFrom;
import com.weijin.model.from.VacationFrom;

import java.util.List;

/**
 * @Author WeiJin
 * @Version 1.0
 * @Date 2025/3/28 19:34
 */
public interface IVacationService {
    /**
     * 提交请假
     *
     * @param vacationFrom 请假信息请求参数
     * @return 请假信息
     */
    Vacation submitVacation(VacationFrom vacationFrom);

    /**
     * 查询所有请假信息，仅供查看
     *
     * @return 所有请假信息
     */
    List<Vacation> queryAll();

    /**
     * 根据用户id，查询下级为处理的请假
     *
     * @param userId 用户id
     * @return 下级为处理的请假
     */
    List<Vacation> queryLowerLevelUntreated(String userId);

    /**
     * 审批请假
     *
     * @param operateFrom 审批入参
     * @return 影响数据库记录条数
     */
    int operateVacation(OperateFrom operateFrom);

    /**
     * 根据请假id获取请假信息 用于查看审批状况
     * @param id 请假id
     * @return 请假信息
     */
    Vacation queryVacationById(String id);
}
